<?php

class Aduanas_RegistroCtaClienteController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        $parametrosNamespace->unlock ();
        $parametrosNamespace->parametrosBusqueda = null;
        $parametrosNamespace->cantidadFilas = null;
        $parametrosNamespace->jsGrip = '/js/grillasmodulos/aduanas/gridRegistroCtaCliente.js';
        $parametrosNamespace->Application_Model_DbTable = "Application_Model_DbTable_RegistroCostosCtaCliente";
        $parametrosNamespace->busqueda = "B.nombre";
        $parametrosNamespace->lock ();
    }
    public function creartablasAction()
    {        
        $table = new Zend_ModelCreator('liquidacion_adjunto','vsullow_factura');
    }        
    public function listarAction() {
		$this->_helper->viewRenderer->setNoRender ( true );

		$cantidadFilas = $this->getRequest ()->getParam ( "rows" );
		if (! isset ( $cantidadFilas )) {
			$cantidadFilas = 10;
		}
		$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		$parametrosNamespace->unlock();
		$parametrosNamespace->cantidadFilas = $cantidadFilas;

		$page = $this->getRequest ()->getParam ( "page" );
		if (! isset ( $page )) {
			$page = 1 ;
		}

		$this->view->headScript ()->appendFile ( $this->view->baseUrl () . '/js/bootstrap.js' );
	 	$this->view->headScript ()->appendFile ( $this->view->baseUrl () . $parametrosNamespace->jsGrip );                

	 	$where = $parametrosNamespace->parametrosBusqueda;
                $order = array('A.fecha_registro desc');
                if(!isset($where)) $where = 1;
                $db = Zend_Db_Table::getDefaultAdapter();
                $select = $db->select()
                         ->from(array('A' => 'registro_costos_cta_cliente'), 
                           array('A.id_registro','A.fecha_registro','C.descripcion','A.cotizacion','B.nombre','A.clase_liquidacion',
                               'A.nro_liquidacion','D.desc_concepto_cta_cliente','E.desc_centro_costos_cta_cliente','A.valor',
                               'A.cod_usuario','A.borrado','A.cod_moneda','A.cod_cliente','A.cod_concepto_cta_cliente',
                               'A.cod_centro_costos_cta_cliente','A.observacion'))
                         ->join(array('B' => 'clientes'),'A.cod_cliente = B.codcliente')
                         ->join(array('C' => 'moneda'),'A.cod_moneda = C.codigo')
                         ->join(array('D' => 'concepto_cta_cliente'),'A.cod_concepto_cta_cliente = D.cod_concepto_cta_cliente')
                         ->join(array('E' => 'centro_costos_cta_cliente'),'A.cod_centro_costos_cta_cliente = E.cod_centro_costos_cta_cliente')
                         ->where($where)
                         ->order($order);
                $result = $db->fetchAll($select);
                
                $pagina = self::obtenerPaginas($result,$cantidadFilas,$page);
                echo $this->_helper->json ( $pagina );                                

   
	}

	private function obtenerPaginas($result,$cantidadFilas,$page){
		$this->_paginator = Zend_Paginator::factory ($result);
	 	$this->_paginator->setItemCountPerPage ( $cantidadFilas );
	 	$this->_paginator->setCurrentPageNumber($page);
		$pagina ['rows'] = array ();
		foreach ( $this->_paginator as $item ) {
                    switch ($item["clase_liquidacion"]){
                        case 'I': $clase_liquidacion = 'Importaci&oacute;n';break;
                        case 'E': $clase_liquidacion = 'Exportaci&oacute;n';break;
                        case 'R': $clase_liquidacion = 'Registro';break;
                        case 'M': $clase_liquidacion = 'Muestra';break;
                    }
			$arrayDatos ['cell'] = array(
                                                null,
                                                $item["id_registro"],                                                
                                                $item["id_registro"],
                                                $item["fecha_registro"],
                                                utf8_encode($item["descripcion"]),
                                                $item["cotizacion"],
                                                utf8_encode($item["nombre"]),
                                                utf8_encode($clase_liquidacion),
                                                $item["nro_liquidacion"],
                                                $item["desc_concepto_cta_cliente"],
                                                $item["desc_centro_costos_cta_cliente"],
                                                $item["valor"],                            
                                                $item["cod_usuario"],
                                                $item["borrado"],
                                                $item["cod_moneda"],
                                                $item["cod_cliente"],
                                                $item["cod_concepto_cta_cliente"],
                                                $item["cod_centro_costos_cta_cliente"],
                                                $item["clase_liquidacion"],
                                                $item["observacion"]);
			$arrayDatos ['columns'] = array(
                                                "modificar",
                                                "id",
                                                "id_registro",
                                                "fecha_registro",
                                                "desc_moneda",
                                                "cotizacion",
                                                "desc_cliente",
                                                "clase_liquidacion",
                                                "nro_liquidacion",
                                                "desc_concepto_cta_cliente",
                                                "desc_centro_costos_cta_cliente",
                                                "valor",
                                                "cod_usuario",
                                                "borrado",
                                                "cod_moneda",
                                                "cod_cliente",
                                                "cod_concepto_cta_cliente",
                                                "cod_centro_costos_cta_cliente",
                                                "clase_liquidacion",
                                                "observacion");
			array_push ( $pagina ['rows'],$arrayDatos);
		}
		$pagina ['records'] = count ( $result );
		$pagina ['page'] = $page;
		$pagina ['total'] = ceil ( $pagina ['records'] / $cantidadFilas );

		if($pagina['records'] == 0){
			$pagina ['mensajeSinFilas'] = true;
		}

		$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		$parametrosNamespace->unlock ();
		$parametrosNamespace->listadoImpuestos = $pagina ['rows'];
		$parametrosNamespace->lock ();

		return $pagina;
	}

    public function buscarAction(){
        $this->_helper->viewRenderer->setNoRender ( true );

        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        $parametrosNamespace->unlock ();

        $cantidadFilas = $this->getRequest ()->getParam ( "rows" );
        if (! isset ( $cantidadFilas )) {
                $cantidadFilas = $parametrosNamespace->cantidadFilas;
        }
        $page = $this->getRequest ()->getParam ( "page" );
        if (! isset ( $page )) {
                $page = 1 ;
        }

        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);

        //$servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
        $where =null;

        if($rowData->descripcion != null){
                $where.="UPPER($parametrosNamespace->busqueda) like '".strtoupper(trim($rowData->descripcion))."%'";
        }

        $parametrosNamespace->parametrosBusqueda = $where;
        $parametrosNamespace->lock ();


        //$result = $servCon->getRowsByWhere($where);
        
        
        //$where = $parametrosNamespace->parametrosBusqueda;        
        $order = array('A.fecha_registro desc');
        if(!isset($where)) $where = 1;
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'registro_costos_cta_cliente'), 
                   array('A.id_registro','A.fecha_registro','C.descripcion','A.cotizacion','B.nombre','A.clase_liquidacion',
                       'A.nro_liquidacion','D.desc_concepto_cta_cliente','E.desc_centro_costos_cta_cliente','A.valor',
                       'A.cod_usuario','A.borrado','A.cod_moneda','A.cod_cliente','A.cod_concepto_cta_cliente',
                       'A.cod_centro_costos_cta_cliente','A.observacion'))
                 ->join(array('B' => 'clientes'),'A.cod_cliente = B.codcliente')
                 ->join(array('C' => 'moneda'),'A.cod_moneda = C.codigo')
                 ->join(array('D' => 'concepto_cta_cliente'),'A.cod_concepto_cta_cliente = D.cod_concepto_cta_cliente')
                 ->join(array('E' => 'centro_costos_cta_cliente'),'A.cod_centro_costos_cta_cliente = E.cod_centro_costos_cta_cliente')
                 ->where($where)
                 ->order($order);
        $result = $db->fetchAll($select);        
        
        $pagina = self::obtenerPaginas($result,$cantidadFilas,$page);
        $jsondata = $this->_helper->json ( $pagina );
        echo $jsondata;
    }

    public function eliminarAction(){
        $this->_helper->viewRenderer->setNoRender ( true );
        $id = $this->getRequest ()->getParam ( "id" );           
        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        try{
            $db = Zend_Db_Table::getDefaultAdapter();
            $db->beginTransaction();
            $servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
            $servCon->deleteRowById(array("id_registro"=>$id));
            $db->commit();
            echo json_encode(array("result" => "EXITO"));
        }catch( Exception $e ) {
            echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode()));
            $db->rollBack();
        }
    }

	public function guardarAction(){
            $this->_helper->viewRenderer->setNoRender ( true );
            $json_rowData = $this->getRequest ()->getParam ( "parametros" );
//$json_rowData = '{"idRegistro":"","fechaRegistro":"2013-08-22","modena":"1","cotizacion":"1","cliente":"9","clase":"I","nroLiquidacion":"384","concepto":"2","centro":"2","valor":"1","observacion":"dfdf","codusuario":"1","borrado":"0"}';
            $rowData = json_decode($json_rowData);
//print_r($rowData);
//echo "<br>";
//echo "rowdata : ".$rowData."<br>";            
            $applicationModel = new Application_Model_RegistroCostosCtaCliente();
            self::almacenardatos($applicationModel,$rowData);
	}

	public function modificarAction(){
            $this->_helper->viewRenderer->setNoRender ( true );
            $json_rowData = $this->getRequest ()->getParam ( "parametros" );
            $rowData = json_decode($json_rowData);
            $rowClass = new Application_Model_RegistroCostosCtaCliente();
		if($rowData->idRegistro != null){
				$rowClass->setIdRegistro($rowData->idRegistro);
			}
            self::almacenardatos($rowClass,$rowData);
	}

        public function almacenardatos($rowClass,$rowData){
     	try{
                $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
     		$service = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
        	$db = Zend_Db_Table::getDefaultAdapter();
        	$db->beginTransaction();
                $rowClass->setFechaRegistro(trim(utf8_decode($rowData->fechaRegistro)));
                $rowClass->setCodMoneda(trim(utf8_decode($rowData->modena)));
                $rowClass->setCotizacion($rowData->cotizacion);
                $rowClass->setCodCliente($rowData->cliente);
                $rowClass->setClaseLiquidacion($rowData->clase);
                $rowClass->setNroLiquidacion($rowData->nroLiquidacion);
                $rowClass->setCodConceptoCtaCliente($rowData->concepto);
                $rowClass->setCodCentroCostosCtaCliente($rowData->centro);
                $rowClass->setValor($rowData->valor);
                $rowClass->setObservacion($rowData->observacion);
                $rowClass->setCodUsuario($rowData->codusuario);
                $rowClass->setBorrado($rowData->borrado);    
//echo "almacenar datos : ";print_r($rowClass);echo"<br>";                
                $result = $service->saveRow($rowClass);
	    	$db->commit();
	    	echo json_encode(array("result" => "EXITO"));
        }catch( Exception $e ) {
	    	echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode()));
		$db->rollBack();
	}
    }

    public function monedadataAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'moneda'), array('distinct(A.CODIGO)', 'A.DESCRIPCION'))
                 ->order(array('A.DESCRIPCION'));
        $result = $db->fetchAll($select);
        $htmlResult = '<option value="-1">---Seleccione---</option>';
        foreach ($result as $arr) {
             $htmlResult .= '<option value="'.$arr["CODIGO"].'">' .trim(utf8_decode($arr["DESCRIPCION"])).'</option>';	
        }
        echo  $htmlResult;
     }
    public function clientedataAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'clientes'), array('distinct(A.CODCLIENTE)', 'A.NOMBRE'))
                 ->order(array('A.NOMBRE'));
        $result = $db->fetchAll($select);
        $htmlResult = '<option value="-1">---Seleccione---</option>';
        foreach ($result as $arr) {
             $htmlResult .= '<option value="'.$arr["CODCLIENTE"].'">' .trim(utf8_decode($arr["NOMBRE"])).'</option>';	
        }
        echo  $htmlResult;
     }  
    public function conceptodataAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'concepto_cta_cliente'), array('distinct(A.COD_CONCEPTO_CTA_CLIENTE)', 'A.DESC_CONCEPTO_CTA_CLIENTE'))
                 ->where('A.BORRADO = 0')
                 ->order(array('A.DESC_CONCEPTO_CTA_CLIENTE'));
        $result = $db->fetchAll($select);
        $htmlResult = '<option value="-1">---Seleccione---</option>';
        foreach ($result as $arr) {
             $htmlResult .= '<option value="'.$arr["COD_CONCEPTO_CTA_CLIENTE"].'">' .trim(utf8_decode($arr["DESC_CONCEPTO_CTA_CLIENTE"])).'</option>';	
        }
        echo  $htmlResult;
     }
    public function centrocostodataAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'centro_costos_cta_cliente'), array('distinct(A.COD_CENTRO_COSTOS_CTA_CLIENTE)', 'A.DESC_CENTRO_COSTOS_CTA_CLIENTE'))
                 ->where('A.BORRADO = 0')
                 ->order(array('A.DESC_CENTRO_COSTOS_CTA_CLIENTE'));
        $result = $db->fetchAll($select);
        $htmlResult = '<option value="-1">---Seleccione---</option>';
        foreach ($result as $arr) {
             $htmlResult .= '<option value="'.$arr["COD_CENTRO_COSTOS_CTA_CLIENTE"].'">' .trim(utf8_decode($arr["DESC_CENTRO_COSTOS_CTA_CLIENTE"])).'</option>';	
        }
        echo  $htmlResult;
     }     
    public function nroliquidaciondataAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);
        
        $lcAnual=mysql_result($res_resultado,$contador,"canual_liq");
        $lcMensual=mysql_result($res_resultado,$contador,"cmensual_liq");
        $lMes=mysql_result($res_resultado,$contador,"mes_liq");
        $lAnho=mysql_result($res_resultado,$contador,"anho_liq");
        $lTipo=mysql_result($res_resultado,$contador,"tipo_liq");
        $liqNro=$lcAnual."-".$lcMensual."-".$lMes."-".$lAnho." ".$lTipo;        
        
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'liquidacion'), array('codigo_liq','canual_liq','cmensual_liq','mes_liq','anho_liq','tipo_liq'))
                 ->where('A.CLIENTE_LIQ = '.$rowData->cliente." AND A.TIPO_LIQ = '".$rowData->clase."'")
                 ->order(array('A.FECHA_LIQ DESC'));
        $result = $db->fetchAll($select);
        $htmlResult = '<option value="-1">---Seleccione---</option>';
        foreach ($result as $arr) {
            $nroLiquidacion = $arr["canual_liq"].'-'.$arr["cmensual_liq"].'-'.$arr["mes_liq"].'-'.$arr["anho_liq"].'-'.$arr["tipo_liq"];
            $htmlResult .= '<option value="'.$arr["codigo_liq"].'">' .trim(utf8_decode($nroLiquidacion)).'</option>';	
        }
        echo  $htmlResult;
     }               
    public function liquidacionnrodespachoAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);       
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'liquidacionDetalles'), array('valor_liq'))
                 ->where('A.cod_liq = '.$rowData->nroliquidacion
                         ." AND A.cod_tabla_liq = '1'"
                         ." AND A.fila_liq = '0'"
                         ." AND A.columna_liq = '4'");
        $result = $db->fetchAll($select);
        foreach ($result as $arr) {
            $valor_liq = $arr["valor_liq"];
        }
        echo  $valor_liq;
     }     
    public function liquidacionvalorimponibleAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);       
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'liquidacionDetalles'), array('valor_liq'))
                 ->where('A.cod_liq = '.$rowData->nroliquidacion
                         ." AND A.cod_tabla_liq = '1'"
                         ." AND A.fila_liq = '8'"
                         ." AND A.columna_liq = '4'");
        $result = $db->fetchAll($select);
        foreach ($result as $arr) {
            $valor_liq = $arr["valor_liq"];
        }
        echo  $valor_liq;
     }      
    public function liquidaciontotalliquidacionAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);       
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('A' => 'liquidacionDetalles'), array('valor_liq'))
                 ->where('A.cod_liq = '.$rowData->nroliquidacion
                         ." AND A.cod_tabla_liq = '9'"
                         ." AND A.fila_liq = '0'"
                         ." AND A.columna_liq = '2'");
        $result = $db->fetchAll($select);
        foreach ($result as $arr) {
            $valor_liq = $arr["valor_liq"];
        }
        echo  $valor_liq;
     }                     
}

